This invention relates to computer programs, and more particularly to program upgrades.
Installing an upgrade of a computer program on a personal computer generally requires a user to load a compressed version of the program onto the computer and begin an installation process. The installation process normally requires a user to execute an installation program and additionally respond to prompts for information as required by the installation program. The installation process may directly overwrite the previous version of software or the process may uninstall the current version of the software prior to installing the new version. Once the software is installed the system is typically rebooted and an attempt can be made to run the software. If the software fails to install, the user must decide whether to reinstall the upgraded program or to reinstall the previous version that was compatible with the system.
In a networked system, which is connected to a central server with attached disk arrays, an upgrade to a centrally accessed program on the server is performed in a substantially similar fashion, where the upgrade requires that the system administrator load the upgrade, install the program, and reboot the server. The system must be shut down for a period of time during installation and the rebooting of the server. This shutdown makes access to both files and programs on or connected to the server impossible during rebooting. Additionally, if the upgrade fails to install, the system administrator must decide whether to reinstall the upgrade or the current version of the program. Both operations again take the server offline and deny users access to files and programs.
In a system which has redundant servers, upgrading a program posses a further problem. In order for the redundant servers to operate properly, the program mirrored on the inactive server must be compatible with the upgraded program on the active server. Potential inconsistencies may occur when the active server is upgraded with a new version of a program and the format of data transfer between the two servers changes. In such a circumstance redundancy is lost between the servers. Also if an upgraded active server goes off line and the inactive server becomes active the inactive server may not be capable of interpreting the new message protocols that were part of the upgraded server program.
The present invention is directed to a method and processor program product for performing an upgrade of a program on a processor. An upgraded version of the program is received into the processor and a backup of the program is created in memory associated with the processor. The upgraded version of the program is then installed and the processor is rebooted. Prior to initializing other application drivers, a reboot driver checks if the state of the processor is correct. If the reboot driver determines that the state of the processor is incorrect, the system reverts to the backup of the program. In alternative embodiments, if the reboot driver determines that the state is incorrect, the system inhibits the loading of other application drivers. Additionally, the reboot driver may set a counter to indicate the number of times that the processor is rebooted. If the counter has not reached a predetermined threshold, the system attempts to reboot the processor with the upgraded version of the program. The counter may be stored in a database, such as, the registry of the processor. If the counter reaches the predetermined threshold, the system reverts to the backup of the program.
In another related embodiment, the processor is a first server in a server cluster. The first server communicates to a second server that an upgrade is to occur in the first server. The first server confirms that second server is running a program which is compatible with the upgraded program prior to beginning the installation of the upgraded program. If the second server is not running a compatible version of the program, the second server sends a signal to the first server to abort the upgrade. If the second server is running a compatible program, the second server sends a signal prior to the first server to begin installation of the upgrade indicating that the second server will receive input and output formerly associated with the first server. When installation of the upgrade is complete, the first server notifies the second server that the first server is in the process of rebooting and then confirms that the program has been upgraded. Once the first server has been upgraded, the entire process may be performed again so that the second server may be upgraded. In another embodiment, the installation of the upgrade is performed automatically without human intervention.